package com.mall.model.vo;

import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.mall.model.domain.SmsCoupon;
import com.mall.model.domain.SmsCouponProductCategoryRelation;
import com.mall.model.domain.SmsCouponProductRelation;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.beans.BeanUtils;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

@NoArgsConstructor
@Data
public class SmsCouponVo {

    /**
     *
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 优惠券类型；0->全场赠券；1->会员赠券；2->购物赠券；3->注册赠券
     */
    private Integer type;

    /**
     *
     */
    private String name;

    /**
     * 使用平台：0->全部；1->移动；2->PC
     */
    private Integer platform;

    /**
     * 数量
     */
    private Integer count;

    /**
     * 金额
     */
    private BigDecimal amount;

    /**
     * 每人限领张数
     */
    private Integer perLimit;

    /**
     * 使用门槛；0表示无门槛
     */
    private BigDecimal minPoint;

    /**
     *
     */
    private Date startTime;

    /**
     *
     */
    private Date endTime;

    /**
     * 使用类型：0->全场通用；1->指定分类；2->指定商品
     */
    private Integer useType;

    /**
     * 备注
     */
    private String note;

    /**
     * 发行数量
     */
    private Integer publishCount;

    /**
     * 已使用数量
     */
    private Integer useCount;

    /**
     * 领取数量
     */
    private Integer receiveCount;

    /**
     * 可以领取的日期
     */
    private Date enableTime;

    /**
     * 优惠码
     */
    private String code;

    /**
     * 可领取的会员类型：0->无限时
     */
    private Integer memberLevel;

    private List<SmsCouponProductCategoryRelation> productCategoryRelationList;

    private List<SmsCouponProductRelation> productRelationList;

    public static SmsCouponVo init(SmsCoupon smsCoupon
            , List<SmsCouponProductCategoryRelation> productCategoryRelationList
            , List<SmsCouponProductRelation> productRelationList) {

        SmsCouponVo vo = new SmsCouponVo();
        BeanUtils.copyProperties(smsCoupon, vo);
        if (CollUtil.isNotEmpty(productCategoryRelationList)) {
            vo.setProductCategoryRelationList(productCategoryRelationList);
        }
        if (CollUtil.isNotEmpty(productRelationList)) {
            vo.setProductRelationList(productRelationList);
        }

        return vo;
    }

}
